package com.leyou.order.controller;

import com.leyou.order.service.OrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@Slf4j
@RestController
public class PayController {

    @Autowired
    private OrderService orderService;

    /**
     * 我们要严格按照微信的要求，在支付成功的情况下，给其返回成功通知。
     * 微信的成功数据为：
     *    xml格式的数据：
     *    <xml>
     *      <return_code><![CDATA[SUCCESS]]></return_code>
     *      <return_msg><![CDATA[OK]]></return_msg>
     *    </xml>
     *    大家注意，我们之前学的@ResponseBody注解在在条件满足的的情况下默认是返回json格式，
     *    如果在条件满足的情况下，也可以根据指定，返回xml数据。
     *    produces = "application/xml"  表示指定返回值的数据类型
     *    其中application/xml是数据的mime类型
     *    @RequestBody注解放在参数上，可以在有jar包支持的情况下，自动将json或者mxl数据转成map或者对象
     */
    @PostMapping(value = "/pay/wx/notify", produces = "application/xml")
    public Map<String, String> notifyWx(@RequestBody Map<String, String> paramMap){
        log.info("【微信来通知我们了！】处理器开始了！！！！！！！！！！！！！");
        orderService.checkWxNotify(paramMap);
        Map<String, String> result = new HashMap<>();
        result.put("return_code", "SUCCESS");
        result.put("return_msg", "OK");
        log.info("【微信来通知我们了！】处理器结束了！！！！！！！！！！！！！");
        return result;
    }


}
